home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Loadstar 7
/
007.d81
/
loan calculator
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-08-26
|
4KB
|
132 lines
0 rem**********************************
1 rem* *
2 rem* loan calculator *
3 rem* *
4 rem*copyright (c) 1984 by h.l.boelte*
5 rem* *
6 rem* all rights reserved *
7 rem* *
8 rem**********************************
10 poke53280,0:poke53281,0
15 p$=""
20 ca=1:e=0:a$=""::dimcs$(5,8):f$=" [146]":f1$=" ":f2$="[157][157][157][157][157][157]"
30 def fna(x)=int(x*100+.5)/100
40 gosub550:gosub800
45 gosub550
50 forl=1to5:forl1=1to8:cs$(l,l1)=f$:next:next
60 cs$(1,0)="amount ":cs$(2,0)=" years ":cs$(3,0)=" rate ":cs$(4,0)="payment"
70 cs$(0,0)=" ":cs$(0,1)="case 1":cs$(0,2)="case 2":cs$(0,3)="case 3"
80 cs$(0,4)="case 4":cs$(0,5)="case 5":cs$(0,6)="case 6":cs$(0,7)="case 7"
90 cs$(0,8)="case 8":gosub600
100 forl1=1to3:gosub450:a$=""
105 printleft$(p$,20)cs$(0,ca)" - "cs$(l1,0);
108 input" ";a$
109 ifa$=""andval(cs$(l1,ca))>0thengosub180:goto130
110 ifval(a$)=0then2000
111 ifl1=1andval(a$)>999999then2000
112 a$=left$(a$,6)
113 if(l1=2orl1=3)andval(a$)>50then2000
114 ifcs$(1,ca)=f$then119
115 cs$(4,ca)=f$
119 cs$(l1,ca)=a$:a$="":gosub610
130 gosub600:next:gosub180
140 gosub3010
150 geta$:ifa$=""then150
160 a=asc(a$)-132:ifa<1ora>4then150
163 onagoto700,4000,170,5000
165 goto150
170 gosub450:gosub3000
171 ca=1
172 ifcs$(l1,ca)<>f$thenifca<8thenca=ca+1:goto172
173 ifca=8then178
175 gosub600:goto100
178 gosub9000:gosub3010:goto150
180 l9=l1:l1=4:pv=val(cs$(1,ca)):yr=val(cs$(2,ca)):i=val(cs$(3,ca))
190 ir=i/100/12:yr=yr*12
200 mp=pv*ir/(1-((1+ir)^-yr))
210 s$=str$(fna(mp)):ifmp>999999thens$=" error"
211 iflen(s$)>6thens$=mid$(s$,2,6)
220 cs$(l1,ca)=s$:iflen(s$)<6thengosub610
230 s$="":l1=l9:gosub450:gosub600:return
450 printleft$(p$,20)" ":return
550 rem *** header ***
560 print"[147][158] "spc(38)" ";
570 print" loan calculator "spc(38)" ";
580 print" [146]"
590 return
600 printleft$(p$,6):ifca>4then620
605 forl3=0to4:print:forl4=0to4:printf1$;f2$;cs$(l3,l4)" ";:next:next:return
610 cs$(l1,ca)=left$(f1$,6-len(cs$(l1,ca)))+cs$(l1,ca):return
620 forl3=0to4:print:printcs$(l3,0)" ";:forl4=ca-3toca:printf1$;f2$;
625 printcs$(l3,l4)" ";:next:next:return
700 open4,4
705 forl3=0to4:print#4:forl4=0to8
706 ifcs$(l3,l4)<>f$thenprint#4,cs$(l3,l4)" ";
707 ifcs$(l3,l4)=f$thenprint#4," 0 ";
708 next:next:print#4,chr$(13):close4
710 goto150
800 print""spc(2)"copyright (c) 1984 by h. l. boelte"
805 print""spc(10)"all rights reserved"
810 print""spc(8)"do you want help (y/n)?"
820 geth$:ifh$=""then820
830 ifh$="n"thenreturn
840 ifh$="y"thengosub900:goto45
850 goto820
900 gosub550
910 print" loan calculator will calculate the"
920 print" monthly payment on any amount up to"
930 print" $999999 for up to 8 cases allowing you
940 [153]" to compare alternatives."
950 [153]" you can edit your entries and print
960 print" to your printer for a permanent record"
970 print" to get the maximum cases on screen,"
971 print" your inputs are limited as follows:"
972 print" amount - 6 characters or 999999"
973 print" years - 50 rate - 50"
990 print" press any key when ready [146]"
1000 geta$:ifa$=""then1000
1010 gosub550
1020 print" loan amounts can be entered as 999.99"
1030 print" (you don't use the $ sign); however,"
1035 print" if it is more than six characters long"
1040 print" it will be reduced to six characters."
1050 print" this applies to payments also."
1060 print" years can be entered as a fraction"
1070 print" if necessary. for example; if you"
1080 print" want to find the payment on a 42 month"
1090 print" loan, enter 3.5 for years."
1100 print" interest rate must be entered as 11.5"
1110 print" not .115 to get the right answer."
1800 print" press any key when ready [146]"
1810 geta$:ifa$=""then1810
1910 return
2000 forl9=1to5
2010 printleft$(p$,24)spc(7)" illegal input-try again ":fort=1to500:next
2020 printleft$(p$,24)spc(7)" illegal input-try again [146]":fort=1to500:next
2030 next:a$="":gosub3000:gosub450:goto105
3000 printleft$(p$,24)" ":return
3005 printleft$(p$,22)" ":return
3010 printleft$(p$,24)"f1[146]=print f3[146]=edit f5[146]=next case f7[146]=opt":return
3020 printleft$(p$,24)" f2[146]=erase f4[146]=quit f6[146]=help f8[146]=return":return
4000 e=ca:gosub3000:printleft$(p$,22)"edit which case (1-8)";
4010 inputa$:a=val(a$):ifa<1ora>8then4000
4020 ca=a:gosub3005:ca=a:goto90
5000 gosub3000:gosub3020:x=ca
5050 geta$:ifa$=""then5050
5060 a=asc(a$)-136:ifa<1ora>4then5050
5070 onagoto6000,7000,8000,5080:goto5050
5080 gosub3000:gosub3010:gosub600:goto150
6000 gosub3000:printleft$(p$,22)"erase all cases (y/n)";
6010 inputa$:ifa$="y"thenca=1:goto45
6020 ifa$="n"thengosub3005:gosub3020:goto5050
6025 goto6000
7000 poke53280,5:poke53281,0:print"[144]";
7010 print"[147]load"chr$(34)"payload"chr$(34)",8":print"run"
7020 poke631,13:poke632,13:poke198,2
7030 end
8000 gosub900:gosub550:gosub600:goto5000
9000 forl9=1to5
9010 printleft$(p$,24)" all cases used-use edit or erase ":fort=1to500:next
9020 printleft$(p$,24)" all cases used-use edit or erase ":fort=1to500:next
9030 next:a$="":return